{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plotting onto Column Cells"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By providing a `plot_fn (Callable)` to a ColumnDefinition, plottable creates an axes on top of each Cell of this column, and creates plots based on each cell's value.\n",
    "\n",
    "You can provide additional keywords to the plot function by passing a `plot_kw` dictionary to ColumnDefinition.\n",
    "\n",
    "```python\n",
    "\n",
    "    plot_fn: Callable = None\n",
    "        A Callable that will take the cells value as input and create a subplot\n",
    "        on top of each cell and plot onto them.\n",
    "        To pass additional arguments to it, use plot_kw (see below).\n",
    "    plot_kw: Dict[str, Any] = field(default_factory=dict)\n",
    "        Additional keywords provided to plot_fn.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Commonly used example plots are provided in plottable.plots. You can have a look at them below.\n",
    "\n",
    "## Creating Custom Plot Functions\n",
    "\n",
    "You can also easily create your own functions. Just make sure to have  \n",
    "``ax: matplotlib.axes.Axes`` as first and  \n",
    "`val: Any` (the cells value) as second arguments.\n",
    "\n",
    "```python\n",
    "def custom_plot_fn(\n",
    "    ax: matplotlib.axes.Axes,\n",
    "    val: Any,\n",
    "    # further arguments that can be passed via plot_kw\n",
    "    ):\n",
    "    ...\n",
    "```\n",
    "\n",
    "for more complex data you can create a dictionary or function that gets data based on the cells value, ie.\n",
    "\n",
    "```python\n",
    "def custom_plot_fn(\n",
    "    ax: matplotlib.axes.Axes,\n",
    "    val: Any,\n",
    "    # further arguments that can be passed via plot_kw\n",
    "    ):\n",
    "    \n",
    "    data = my_data_dict.get(val)\n",
    "    or\n",
    "    data = my_data_getter_function(val)\n",
    "```\n",
    "\n",
    "You can create Sparklines, Histograms, ... you name it.  \n",
    "\n",
    "If you create any cool plots to use with plottable, please consider sharing them by creating a Pull Request!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Available Plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from matplotlib.colors import LinearSegmentedColormap\n",
    "\n",
    "from plottable import ColumnDefinition, Table\n",
    "from plottable.plots import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "path = list(Path(\"../example_notebooks/country_flags\").glob(\"*.png\"))[0]\n",
    "cmap = LinearSegmentedColormap.from_list(\n",
    "    name=\"bugw\", colors=[\"#ffffff\", \"#f2fbd2\", \"#c9ecb4\", \"#93d3ab\", \"#35b0ab\"], N=256\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## percentile_bars"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAA6CAYAAACgTzeXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAACU0lEQVR4nO3cS2sTURjG8eecyUzGqdbEakUUN4KoGwU/gKC41c/qzo3oVnEhiIg3vEAp1to2oU7neo6L2EmmqZcB2z6L57fK6WF6OvOHBApvjPfeQ46UPeo/QBSBgiIQUAQCikBAEQgoAgFFIKAIBBSBQK/rBS/WHiAtN2GMxaB/HleX7jR7O9UYr9YfIq9/oGcjXB7ewjC+0Oyvpe/xcfQUlSvQDxZw/cw9hEHc7L/+/ghb+Qq8d0jCIW4s3z+0s7MsQ13XAABjDJIkaZ2dpil2/8MTBAHieHqtcw5ZlsE5B2MMoihCGIb//Ew7RfiWfsDn8fOZG3uHK6duwxgDAPg0eoaV7ZfNfhycaD2INxuPsZF9adYXF29iObk0uRFf4+3mk+lhO8C1pbuIguRQzs7zvHWvzjlYO3mjqKoKZVk2e1VVod/vN2cXRdHa9953iqC3IwKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEFIGAIhDoFOFYb9C+2PSaQYn99qNgobWOe4utdWin0y7WBLCmPbMyuz7os/ea/d2zr/f72e4wye/Wf2O6fstLVo2RllswxmIxOovAtidStov1ZmTpZP/c3PWjfLUZWToenW7t1a7EuPj6a1xqMPfgDvJs730zLmWtnXuQzjk45wBMxqX2hqnrGt57GGMQBPNR/6RzBPn/9JlAQBEIKAIBRSCgCAQUgYAiEFAEAopAQBEI/AQWzeShNKPijQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 100x50 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 0.5))\n",
    "\n",
    "bars = percentile_bars(ax=ax, val=72, color=\"#b0db7c\", background_color=\"#f0f0f0\", is_pct=False)\n",
    "\n",
    "plt.show()\n",
    "\n",
    "# fig.savefig(Path.home() / \"Downloads/percentile_plot.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "\n",
    "image(ax, path)\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## circled_image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "\n",
    "im = circled_image(ax, path)\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## circled_image with border"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "\n",
    "im = circled_image(ax, path, linewidth=2, visible=True, edgecolor=\"#999999\")\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAABFklEQVR4nO3dsQnDMBBAUctkJq/hJmOmyRpZSl7BKYI+4b36BAefqzXmnHNjqX31AoiQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBDy+fXC8X7/Y4+98zuftWZcQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBIgQIEKACAEiBAxfAa/nEgJECBAhQIQAEQJECBAhQIQAEQJECBAhQIQAEQJECBAhQIQAEQIulI8Lu0/4qLQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "b = bar(ax, 1, color=\"k\", cmap=cmap)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## bar with value annotation and linecolor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAD6UlEQVR4nO3cTWgUdxzG8WfXxNityppNKlYSNcTdxLwYNiaHQvWiiFhreyjFkoAFobWxSElLFRqpeqiQStMqxNeDaBtRMIrSHmwv6UUICYRCN4gVN01f3Mwm63ta2Z2emrAYcSfJ/ucxPB+YQ4b9Jz/2y8xkJ0M8tm3bEFd53R5AFIGCIhBQBAKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEFIGAIhBQBAKKQEARCCgCAUUgoAgEcpwuGBgYgGVZ2ZhlRikoKEBxcXFmL7YdiEaj9hxfng1A2zM2n89nR6PRjN5XR0eCZVkYffgP9rY3Y2mwyMnSrKr0v+r2CGkikQgaGhpgWVZGR4Pj0xEALA0WoWxl6WSWZkU4EHZ7hCnRhZmAIhBQBAKKQGBSF+apOH/yCr49fAHx2AiWVyxD84H3UBEOTfjaKx0/Yv+HbWn7Zufl4uc/Og1Mao7RCFc7u/B1ywl8+mUTKmpDOHvkEna+tQfnrh1FfqF/wjUvzvPh/LWj4zs8ZmY1yejpqKP9IjY3rsemd9ahJFSMXQebMOeFPFz+7upT13g8HgQWLhjfXlpgcGIzjEV4/O9j9PfdQP2amvEf7vWibk0Nfunuf+q6Rw8eYXPNu9hUvRUfN+zHzf6ogWnNMhYhEb+LZDL1xGknv9CP4djIhGuWlC7GZ9/sROvpFuxtb4adSmHbhk9w+8+Zde/K+IXZiaq6clTVlY99XV1fjrdf2Y7OUz/g/d2NLk42vYwdCf7AfMya5cXwUCJt//BQAvkZnudzcnMQrCrB4M2/sjChe4xFyJ2di7KVpeju6hvbl0ql0N3Vh6q6soy+RzKZxG+/RlGwcGZdnI2ejrZsfwP7dnyF8prlWBEO4uyRSxh9OIrXtqwFAHz+wUEULgqgqWUrAOBEawcqV4VQtOxl3LtzH2cOX8DfgzG83rje5NhZZzTCujdXIxG/g2MHziAeG0GwsgRt5/aN/dp5e3AIXu/4wXkvcR9ffHQI8dgI5vnnoqy6FMe/b0VJKMM/ljwnPE7+B15vby9qa2tx6qc2qlvZ9YGNbo+Q5v/3qaenB+Hws2+z694RAUUgoAgEFIGAIhBQBAKKQEARCEzqE/Ot679P9xxTkuPvdXuENJFIxNkCp49B+nw+1x8xfB42J49BOrptAeiB4Ew5eSDYcQSZfrowE1AEAopAQBEIKAIBRSCgCAQUgYAiEFAEAopAQBEIKAIBRSCgCAQUgYAiEFAEAopAQBEIKAIBRSCgCAQUgYAiEFAEAopAQBEIKAIBRSCgCAQUgcB/U2Ea/RxSxI4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "b = bar(ax, 0.5, plot_bg_bar=True, cmap=cmap, annotate=True, lw=1, height=0.35)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## percentile_stars"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK8AAABhCAYAAACgcPGxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAE9UlEQVR4nO3dvW9bVRzG8eecc30dX5sMgFhQC2qlRCoDE8qQjDBUDKgbrAzQdoP/oP8ALN2ZoEOiJn8CLxUSQh0QLxUMICfdGoXgJm6Se885DEmsvNjJPb62r3/281mqNLafqP7W9/omUpT33oNIIF32F0DUL8ZLYjFeEovxkliMl8RivCQW4yWxGC+JxXhJLMZLYjFeEovxkliMl8RivCQW4yWxGC+JxXhJLMZLYjFeEovxkliMl8RivCQW4yWxGC+JxXhJLMZLYjFeEovxkliMl8RivCQW4yWxGC+JxXhJLMZLYjFeEovxkliMl8RivCTWWMVrt5/ArbwGu/2EO6Eb1g5tAwCstWi1WkPfCTFW8fq/v4Y+eAb3zzfcCdxI03RoGwCQpim890PfCTFW8aqnywAAvbHMncCNUcQ7ip0QYxOv/fcPmJ2/AABm58+hHWonaefkhnNuaId0ay2cc0PfCTU28brmCvzRl+Oh4Zor3AnYAIb3qnj2ccfl1Xds4j08tB7/GmQ3tEPtJO2c3pi+eKNRDfnsBezmzzj5j92xv4Xo+W+dDxUA0/oVWXMVqL7c5dEUzKvvQEW1id4J2QAOD+lpmkIp1WUDMMZ0/Zz3vuepgPe+c8pQdGfQ1Kh+63v6+5eo/PJ5z897aCi4nh+fe7y3v0Dlrc8meidk47/3t3ve7tjMzAyq1eq5v9/f38fe3t6l98+r186gjey0IZq/jezaHQCAx/n/lWef2G5P9PH9smt3EM3fnvid0I2LxHGMOI6DPxdqkI91mZG98h7Lmg+hf/oYyu5C+Sz3/bwy8KYBt/AVojduTdVOno2LXnmTJEGlUrn0a0rTFO12+9LbFd0ZlJHHCwBuZwPu0YcwWz92eT05zwOwryxCLz6AblyZyp3LNrrFa4xBkiTQOv8B1jmHdrsddDmsn51BKOVqg25cgXnvO2Q37nU9HJ7koZDduAfz7rdBQU3aTsgGAFSrVdTr9eCgtNao1+u5z1n73RmE0i6VKRPBzH2S67Zm7lMo09+FkUnaCdmI47jvd/xKqdznrUV2iir1Oq9bf5jjVj7n7aZjJ+99syz/+XeR+xfdKaLcb1KsLwMnDoFemVN/HjJA0Qv8k7TTY+Osg4OD/jcC7l90p4jS4nUvNmE2f+hc7vFQcI15ZEtrcI25znmdgoV59j38/tbU71y0cfac01qLft+Ld/v5Ba111zdlRXaKKi/ejTUo2M6Taq/fhb75GNHVD6BvPoa9fhfA4ROkYGGbq1O/c9FGo9E4d57a77dxz54KxHGMRqOBSqUy0J2iyjtt2Dj8QRUfzSJbWkO0cB8qmgEAqKiGaOE+ssVV+Gj21O2neueiDaVQq9WQJEnn5v1GdfJ+SZKgVqt13pQNcqeoUq7zAoBbvQqXvAm99AC6/nrv2+0+hXv0EXS7CX1rfap3cm8cXat1zmF2djZoAwBarVbP04RB7hRVWrz+4DkQ1aFyXB/0zgHZLlT80lTvBG0cPa39XMYKuW+RnaJKi5eoqLH5eV6iUIyXxGK8JBbjJbEYL4nFeEksxktiMV4Si/GSWIyXxGK8JBbjJbEYL4nFeEksxktiMV4Si/GSWIyXxGK8JBbjJbEYL4nFeEksxktiMV4Si/GSWIyXxGK8JBbjJbEYL4nFeEksxktiMV4Si/GSWIyXxGK8JBbjJbEYL4n1P2duXPwwMywiAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 200x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(2, 1))\n",
    "\n",
    "stars = percentile_stars(ax, 70, background_color=\"#f0f0f0\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## progress_donut"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 100x100 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(1, 1))\n",
    "donut = progress_donut(ax, 73, textprops={\"fontsize\": 14})\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.10.5 ('env': venv)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "fad163352f6b6c4f05b9b8d41b1f28c58b235e61ec56c8581176f01128143b49"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
